package com.example;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author loubobooo
 * @Description #228. 汇总区间
 * @Date 2022/3/1
 */
public class SummaryRanges {

    /**
     * 方法描述:给定一个 无重复元素 的有序 整数数组 nums 。
     *
     * 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说，
     * nums 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个范围但不属于 nums 的数字 x 。
     *
     * 列表中的每个区间范围 [a,b] 应该按如下格式输出：
     *
     * "a->b" ，如果 a != b
     * "a" ，如果 a == b
     *
     * 示例 1：
     *
     * 输入：nums = [0,1,2,4,5,7]
     * 输出：["0->2","4->5","7"]
     * 解释：区间范围是：
     * [0,2] --> "0->2"
     * [4,5] --> "4->5"
     * [7,7] --> "7"
     * @param: [nums]
     * @return: java.util.List<java.lang.String>
     * @author: loubobooo
     * @date: 2022/3/1
     */
    public List<String> summaryRanges(int[] nums) {
        List<String> list = new ArrayList<>();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < nums.length; i++) {
            // nums[i + 1] -1 != nums[i]存入"->"
            if (!(i + 1 < nums.length && nums[i + 1] - 1 == nums[i])) {
                // 当字符串里
                if (stringBuilder.length() > 0) {
                    stringBuilder.append("->");
                }
                stringBuilder.append(nums[i]);
                list.add(stringBuilder.toString());
                stringBuilder = new StringBuilder();

            } else {
                // 长度为0的时候记录这个数字
                if (stringBuilder.length() == 0) {
                    stringBuilder.append(nums[i]);
                }
            }
        }
        return list;
    }
}
